KURZUS: Rendszer és irányítás

MODUL: VI. Modul: Számítógép alapú rendszerek fejlesztése

11. lecke: Informatikai rendszerek

| A modul a számítógép alapú rendszerek fejlesztésének főbb kérdéseit veszi sorra. A modul egyes fejezeteiben megismerkedünk az informatikai rendszerek, ezen belül a szoftverrendszerek témakörben használatos alapfogalmakkal. A modul bemutatja a szoftverfejlesztés folyamatát, áttekinti a szoftverfejlesztés során leggyakrabban használt folyamatmodelleket és tervezési módszereket. A modulnak - hangsúlyozzuk - nem célja és feladata teljes körű bevezetést adni, sokkal inkább a helyes szemléletmód elsajátításának segítése, az alapfogalmak ismertetése, rendszerezése és azok közötti összefüggések áttekintése a célja.
Követelmények: Ön akkor sajátította el megfelelően a tananyagot, ha
képes meghatározni az informatikai rendszerek fejlesztésének általános folyamatát, meg tudja indokolni, miért játszanak fontos szerepet a módszertanok a fejlesztésben, meg tudja indokolni, mire szolgálnak, és miben segítenek a modellező nyelvek.
Időszükséglet: A tananyag elsajátításához körülbelül 90 percre lesz szüksége.
Kulcsfogalmak
szoftver, szoftvertervezés, szoftverfolyamat, fejlesztési tevékenység, szoftverfolyamat modell, szoftverfejlesztési módszertan, modellező nyelv.
Cél: A lecke azokkal a kérdésekkel foglalkozik, amelyek a számítógéppel támogatott szoftverrendszerek fejlesztésének megalapozásához kapcsolódnak. A szoftver fogalmának bevezetése mellett a lecke az informatikai rendszerek életciklus modelljét, a szoftvertervezést, mint mérnöki tevékenységet, a szoftverfolyamatot, a szoftverfolyamat alaptevékenységeit és a szoftverfolyamat modelleket tárgyalja.
Követelmények: Ön akkor sajátította el megfelelően a tananyagot, ha
definiálni tudja a szoftvertervezést, mint mérnöki tevékenységet, ismeri és el tudja magyarázni az informatikai rendszerek életciklus modelljét, meg tudja határozni a szoftverfolyamat fő tevékenységeit, ismeri a legfontosabb szoftverfolyamat modelleket, meg tudja határozni a modellek között különbségeket, javaslatot tud tenni, hogy egy adott szoftverprojekt esetén melyik szoftverfolyamat modellt érdemes választani.
Időszükséglet: A tananyag elsajátításához körülbelül 50 percre lesz szüksége.
Kulcsfogalmak
szoftver, szoftverfolyamat, életciklus, fejlesztési tevékenység, fejlesztési termék, szoftverfolyamat modell.
Napjainkban az életünknek szinte nincs olyan területe, ahol ne találkoznánk informatikai megoldásokkal. Autóba ülve komoly közlekedési és forgalomirányító rendszerek segítik, hogy eljussunk a munkahelyünkre, egy betegség alkalmával az orvos az egészségügyi informatikai rendszer révén azonnal látja - megfelelő jogosultságok birtokában - a beteg kórtörténetét, de otthonról elmenve lakásunk riasztó-védelmi rendszerét élesítve szintén informatikai rendszerrel van dolgunk. A nyaraláskor repülőre ülve maga a repülőgép is komoly rendszertervezési munka terméke, nem is beszélve az iránytó toronyban ülő munkatársak munkáját segítő légiforgalmi iránytó rendszer szerepéről. A felsorolást még folytathatnánk, hiszen rengeteg izgalmas informatikai rendszer vesz körül bennünket. A felsorolás helyett inkább tekintsük át az informatikai rendszerekkel kapcsolatos alapfogalmakat, illetve az informatikai rendszerek egyik meghatározó alkotóelemének, a szoftvernek és a szoftverek fejlesztésének főbb témaköreit.
1. Informatikai rendszerek
Napjainkban a vállalatok üzleti folyamatait kiszolgáló információs rendszerek működtetése számítógéppel támogatott informatikai megoldásokkal történik. A piacon elérhető szolgáltatások igénybevételekor egyre több szolgáltatás, illetve termék áll valamilyen módon szoftveres irányítás alatt. A számítógéppel támogatott rendszerek, informatikai megoldások azonban nem korlátozódnak le csupán a szoftverre, fejlesztésük holisztikus személetet, rendszerszemléletű gondolkodásmódot igényel. Ez azt jelenti, hogy a számítógép alapú rendszerek tervezésekor a szoftvertervezés mellett gondoskodni kell a hardverek és a rendszerek által támogatott folyamatok tervezéséről.
Informatikai rendszerek tervezése alatt a számítógép alapú rendszerek szisztematikus tervezését értjük, amely magában foglalja a szoftvernek, a hardvernek és a folyamatoknak a tervezését.
Az informatikai rendszerek rendkívül összetett feladatokat oldanak meg. Bonyolult folyamatokat támogatnak, amely folyamatok a környezet változása miatt változhatnak, miközben sok ezer hardver és szoftverkomponens működését kell, hogy összehangolják annak érdekében, hogy az eredeti rendeltetési célnak megfelelő szolgáltatást tudják nyújtani, terméket tudják előállítani. Ilyen szolgáltatás kimenet lehet egy automata mobilparkolást támogató rendszer, avagy a szívműtétek végrehajtásában alkalmazott robot.
Az informatikai rendszerekre a Rendszer modulban már megismert, a rendszerekre vonatkozó ismérvek érvényesek. Ez jelenti azt, hogy az informatikai rendszerek is különféle elemekből, rendszerkomponensekből épülnek fel, ahol az egyes komponensek jól definiált funkcionalitással rendelkeznek. Az informatikai rendszerek sem önálló, független rendszerek. Egy adott környezetben működnek, ahol a környezet változásai meghatározzák a rendszer működését. Bizonyos rendszerkomponensek további rendszerekre, ún. alrendszerekre bonthatók. A rendszerkomponensek, habár jól definiált működéssel rendelkeznek mégsem függetlenek egymástól a rendszer teljes egésze, a rendszer célja tekintetében. A rendszerkomponenseknek képesnek kell lenni együttműködni más rendszerbeli komponensekkel, működésük függ a többi kapcsolódó komponens működésétől.
Egy informatikai rendszer fejlesztése csak akkor mondható sikeresnek, ha az informatikai rendszer teljesíti a célját, vagyis képes azokat a szolgáltatásokat nyújtani, illetve termékeket előállítani, ami miatt a rendszert létrehozták. Ez csak az informatikai rendszert felépítő rendszerkomponensek (rendszerek) összehangolt és integrált együttműködésével érhető el, ahol a komponensek teljes rendszer alkotnak.
Amikor felmerül az ötlet vagy igény egy informatikai rendszer fejlesztésére, fontos, hogy kialakítsunk egy minden résztvevő által elfogadott elképzelést a projektről, eldöntsük, hogy egyáltalán megvalósítható-e, illetve érdemes-e elkezdeni a részletek elemzését/tervezését. Számos kérdést kell megvizsgálni:
Mi az elképzelésünk (víziónk) a tervezett rendszerről és annak mi az üzleti hasznosulása? Megvalósítható egyáltalán az elképzelés? Vegyünk egy kész rendszert vagy fejlesszünk egyet? Durva becslést kell adnunk a költségekre. A fentiek alapján folytatjuk vagy abbahagyjuk a projektet?
Az informatikai rendszerek létrehozásának, használatának és karbantartásának lépéseit egy életciklus modellben lehet összefoglalni. Az informatikai rendszerekkel kapcsolatos tevékenységeket az életciklus modellben Sommerville az alábbi módon definiálta:
Követelmények meghatározása: az informatikai rendszer követelményének teljes körű meghatározása, a rendszer által megvalósított alapfunkciók azonosítása. Rendszertervezés: a követelmények alapján a rendszer alrendszerekre történő felosztása, az alrendszerek által nyújtott funkciók meghatározása, az alrendszer interfészek definiálása. Alrendszerek fejlesztése: a rendszertervezési szakaszban azonosított alrendszerek implementációja. Nagyobb volumenű alrendszereket érdemes önálló rendszerként kezelni. Ez azt jelenti, hogy ebben a szakaszban újabb rendszertervezési folyamat veszi kezdetét. Rendszerintegráció: a lefejlesztett alrendszerek integrációja. Rendszertelepítés: az elkészült informatikai rendszernek a működési környezetbe történő illesztése. Rendszer működése: a működési környezetbe telepített rendszer üzemeltetése. Rendszer evolúciója: a működés során felmerülő hibajavítások, a megváltozott körülményekhez történő adaptáció. A rendszer üzemen kívül helyezése: az informatikai rendszer forgalomból történő kivonása, az általa nyújtott szolgáltatások megszüntetése. Amennyiben a meglevő rendszert új rendszerre (pl. új rendszer fejlesztésével) cseréljük, a lecserélt rendszer fejlesztése, üzemeltetése során szerzett tapasztalatokat felhasználhatjuk az új rendszer létrehozásához.
Informatikai rendszerek életciklus modellje
1. ábra
2. Szoftverrendszerek tervezése
Az informatikai rendszerek üzemeltetésekor a rendszert alkotó hardverelemek, folyamatok mellett talán a legszenzitívebb terület a rendszert alkotó programok, szoftverek. Az alfejezetben a szoftver fogalmának tisztázása után szó lesz a szoftverfejlesztés folyamatáról, bemutatásra kerülnek a jól bevált szoftverfolyamat modellek és szoftvertervezési módszerek.
Szoftver
A szoftverek - az informatikai rendszer részeként - egy adott feladatot hajtanak végre. A szoftverek nemcsak programokból, hanem a hozzájuk kapcsolódó dokumentációkból (a rendszer szerkezetét leíró rendszerdokumentáció, a rendszer használatát összefoglaló felhasználói dokumentáció), a programok futtatásához szükséges konfigurációs adatokból állnak.
A szoftver számítógép programok és a hozzájuk kapcsolódó dokumentációk.
Szoftvertervezés
A szoftverkomponensek az informatikai rendszerek meghatározó elemei. Az informatikai rendszerek által megvalósított megoldások, az általuk nyújtott szolgáltatások, illetve létrehozott termékek nagymértékben függnek az informatikai rendszerben levő szoftverek minőségétől. E miatt a függőség miatt nem elhanyagolható tényező, hogy a szoftverek a megfelelő minőségben teljesítik-e a velük szemben támasztott igényeket.
Az egyre összetettebb feladatok megoldását támogató informatikai rendszerekben a szoftverek létrehozásakor tudatosan érdemes eljárni. A szoftver létrehozását meg kell tervezni, amely tervezés nem más, mint a feladathoz legjobban illeszkedő módszereknek, eszközöknek a megválasztása. Számos számítógép-tudományi elmélet és módszer létezik, amelyek kézzelfoghatók lennének a szoftvertervező mérnökök számára, azonban ezek az általános módszerek nem mindig alkalmazhatók a valós élet különböző, összetett és nem utolsó sorban sokszor rendkívül egyedi problémáira, mint pl. bankjegybevizsgáló berendezés. Gyakran sokkal értékesebb a fejlesztői kreativitás, a fejlesztői tapasztalat, a korábbi fejlesztések során már jól bevált módszerek használata.
A tervezési munka nemcsak a megvalósítást segítő technikai módszerek megválasztására korlátozódik. Egy szoftverrendszer nem éri el a célját, ha nem az elvárásoknak megfelelően működik, ha nem a kitűzött határidőre szállították le, vagy ha túlléptük a költségkereteket. Minden informatikai rendszer fejlesztésekor meg kell tervezni a fejlesztés idejét, meg kell becsülni a megvalósításhoz szükséges erőforrásokat, a költségeket. A szoftverprojekt menedzser feladata lesz, hogy biztosítsa, a szoftverprojekt megfelel ezeknek a megszorításoknak, ellenőrzi, hogy a fejlesztés az idő és költségterveknek megfelelően halad, teljesítve a fejlesztés célját.
A szoftvertervezés mérnöki tevékenység, ahol a mérnökök szisztematikus tervezési folyamat mentén fejlesztik a szoftvereket. A tervezés a szoftvertermékek minden aspektusát érintik, a specifikációtól egészen a rendszer bevezetéséig, a projektmenedzsment gyakorlatát és a támogató eszközök fejlesztését is beleértve.
Szoftverfolyamat
A szoftverrendszerek tervezésekor számos feladat van. Ezeket a feladatokat egy jól felépített folyamat mentén hajtjuk végre, amely folyamat lépéseit általánosan fejlesztési tevékenységeknek nevezünk. A szoftverfolyamat tehát nem más, mint a leendő szoftvertermék előállítására irányuló tevékenységek sora. A szoftverfolyamat a szoftverigény felmerülésétől a szoftver használatból történő kivonásáig tart. Egy szoftvert használata során több alkalommal is továbbfejleszthetnek, melyeket a szoftver különböző verziójaként jelölnek.
A szoftverfolyamat olyan tevékenységek együttese, amelyek eredményeként egy adott feladatot megvalósító szoftverrendszert fejlesztünk és/vagy továbbfejlesztünk.
Fejlesztési tevékenység alatt a szoftver előállítása érdekében tett műveleteket értjük (pl. fogalomtár kialakítása, felhasználó követelmények meghatározása és leírása, programrészlet megírása stb.).
Fejlesztési termék (artifact) alatt a fejlesztési lépések eredményeit értjük (pl. use case modell, domain modell, tervezési osztály modell, felhasználó kézikönyv stb.).
Fejlesztési tevékenységek, fejlesztési termékek a RUP módszertanban
2. ábra
A fejlesztési tevékenységek végrehajtására nincs egy generikus, szabványként elfogadott szoftverfolyamat. Miért? Napjaink szoftverrendszerei rendkívül összetettek és heterogének. Bonyolult és számos esetben unikális problémákra keresik a megoldást egy folyamatosan változó környezetben. Mivel nincs két egyforma rendszer avagy probléma, emiatt nincs két egyforma szoftver és ezáltal egy ideális folyamat sem. A szoftverek fejlesztése során a mérnököknek a korábbi fejlesztések során már jól bevált módszerek mellett mindig újabb és újabb ötleteket, ad-hoc megoldásokat kell bevetni annak érdekében, hogy az előállt szoftvertermék az elvárásoknak megfelelően működjön a szoftverfejlesztési projekt keretein belül. A szoftverek tervezése, a problémamegoldás nagyfokú emberi kreativitást igényel, ebből eredendően a szoftverfolyamatokat jelentősen befolyásolják és meghatározzák az emberi nézetek és döntések.
Számos szoftverfolyamat létezik, hiszen a mérnököknek legtöbb esetben egyedi problémára kell megoldást adni. A szoftverfolyamatokban - a sokféleség ellenére - vannak olyan alaptevékenységek, amelyek valamennyi szoftverfolyamatban megtalálhatók:
Szoftverspecifikáció: a szoftver funkcióinak meghatározása. A specifikáció eredményeként előállt termékek, outputok pl. use case-ek, szoftverspecifikáció dokumentum stb. Szoftvertervezés: a specifikációt megvalósító struktúra terve. A tervezés eredményeként előállt termékek, outputok pl. tervezési dokumentum, tervezési osztályok stb. Implementáció: futtatható szoftver létrehozás a szoftver struktúra alapján. Az implementáció eredményeként előállt termékek, outputok pl. kódok. Szoftvervalidáció: a szoftvert validálni kell, ahol azt vizsgáljuk, hogy a szoftver megfelel-e a megrendelő igényeinek. Más szóval a szoftver azt csinálja, amit a felhasználó elvár attól. A validáció eredményeként előállt termékek, outputok pl. teszt riportok, változtatási kérelem stb. Szoftverkarbantartás: a szoftver változtatása. A változtatás oka lehet egy hibajavítás, vagy egy új fejlesztési igényből fakadó új funkció fejlesztése.
A szoftverfolyamat alaptevékenységei
3. ábra
Az alaptevékenységek mellett vannak olyan tevékenységek, amelyek a szoftverrendszer fejlesztésének teljes folyamata alatt mindvégig jelen vannak, segítve azt, hogy a kitűzött céloknak megfelelő termék kerüljön megvalósításra. Ezek a támogató folyamatok a projektmenedzsment, a projektkövetés, ellenőrzés, konfigurációmenedzsment, dokumentációs tevékenység, kockázatkezelés.
Szoftverfolyamat modellek
A szoftverrendszerek szoftverfolyamat modellek mentén jönnek létre. A modellek közös jellemzője, hogy a fejlesztési folyamatot több lépésre bontják. A szoftverfolyamat modellek a tevékenységek azon halmazát tartalmazzák, amely a szoftverrendszerek követelményeinek a meghatározásától az elkészült rendszer üzemeltetésén, a rendszer megszűnéséig tart. A modellek abban térnek el egymástól, hogy milyen tevékenységeket hangsúlyoznak, a tevékenységeket milyen sorrendben hajtják végre. Vannak modellek, amelyek a szoftverfolyamatot lineárisan hajtják végre, vannak modellek, ahol a tevékenységek párhuzamosan zajlanak. Egyes modellekben van visszacsatolás, mások iteratív végrehajtásban gondolkodnak. A modellek többsége meghatározza, milyen termékeket kell kifejleszteni és mikor, meghatározza az egyes fejlesztőknek, valamint csoportnak a feladatát. Kritériumokat ad a termékek és tevékenységek mérésére és minősítésére.
A szoftverfolyamat végrehajtásának egyik általános megközelítése, mikor a fejlesztés folyamatát a tevékenységek szekvenciális végrehajtásával írjuk le. A szoftverfejlesztési folyamat végrehajtásának ez a fajta megközelítési módja azonban nem mindig célravezető, főleg olyan esetekben, amikor bonyolultabb rendszereket kell tervezni. A tevékenységek száma sokszorosára nő, a közöttük levő bonyolult függőségi viszonyok ábrázolása áttekinthetetlen tervet eredményez.
Vannak olyan szoftverfejlesztési modellek is (pl. UP modell - Unified Process), amelyek a fejlesztési folyamatot fejlesztési lépések, fázisok mentén írják le, ahol sokkal inkább a fázisok célját és a fázisokban elkészítendő termékeket határozzák meg, mint a benne levő tevékenységeket (lásd 2. ábra).
A szoftverfolyamat modellje a szoftverfolyamat egy egyszerűsített leírása, a folyamat egyfajta absztrakciója. A szoftverfolyamat modellek ritkán jelennek meg tiszta, ideális formában. A folyamatot egy speciális aspektusból közelítik meg, mást-mást hangsúlyozva, így csak részleges információkkal rendelkezik magáról a folyamatról. Miután az egyes modellek önmagukban nem fedik le a folyamat minden aspektusát, ezért nagyobb rendszerek fejlesztésénél nem egy modellt, hanem több, különböző modellt alkalmaznak.
A legismertebb szoftverfolyamat modellek:
Vízesésmodell: a folyamat alapvető tevékenységeit a folyamat különálló fázisainak tekinti. Ezek a fázisok a követelményspecifikáció, a szoftvertervezés, az implementáció, a tesztelés, integráció és a karbantartás. A modellben a fejlesztés lépései, a fázisok meglehetősen mereven, lépcsőzetes formában épülnek egymásra. Ez a működési logika jelentősen behatárolja a modell alkalmazhatóságát. A modell hasznos minden olyan szoftverprojekt esetén, ahol a felhasználói követelmények már a projekt indításakor ismertek és egyértelműek. A modellben a fázisok mereven elkülönülnek egymástól, egy fázis csak akkor indítható el, ha a megelőző fázis már lezárult. A fázisoknak ez a merev elkülönítése sokszor azzal jár, hogy a kezdeti lépések problémái, hiányosságai csak sokkal későbbi fázisok során derülnek ki.
Az időtengely mentén a végrehajtása menete a vízesésmodellben
4. ábra
Iteratív fejlesztés: a szoftver követelményeit nem egymás utáni lépések mentén állítjuk elő, hanem iterációk mentén. Ehhez a rendszert a követelmények fontossága alapján részekre bontják, majd a követelmények prioritás alapú felosztása alapján iterációk mentén a fontosabb részeket kezdik először kidolgozni. Minden egyes iterációban az előállított szoftvertermék a követelmények egyre bővülő körét elégíti ki. Az egyes iterációkban előállított szoftverfejlesztési termékek ráépülnek a korábbi iterációkban előállított szoftverfejlesztési termékekre, ezért ezt a fajta folyamat modellt inkrementális fejlesztésnek is szokták nevezni.
Iteratív végrehajtás menete
5. ábra
Komponens alapú fejlesztés: ez a modell a már meglevő vagy készen kapható dobozos szoftverek felhasználásával valósítja meg a kívánt szoftverkövetelményeket. A készen kapható megoldások beépítésével faraghatunk a fejlesztési költségekből, hiszen azokat nem kell újonnan kifejleszteni, továbbá azokat már korábban kitesztelték, kipróbálták, validálták. Ha a projekt a kész komponensek megvásárlása mellett dönt, ehhez első lépésként a követelményeket határozzuk meg, majd megnézzük, hogy léteznek-e már olyan szoftverek, komponensek, amelyek alkalmasak a követelmények megvalósítására. A modell hátránya, hogy sok esetben, ha meg is találtuk a megfelelő komponenseket, azok nagy valószínűséggel nem teljes mértékben fedik le az igényeket. Ilyenkor megfordítjuk a képletet, vagyis a követelményeken igazítunk, módosítjuk azokat úgy, hogy a kész komponenseket be tudjuk építeni a modellbe. A komponens alapú megközelítés terjedésének oka, hogy a szoftverrendszerek egyre összetettebbé, bonyolultabbá válnak, a megrendelők minél gyorsabban akarnak kész szoftver-termékhez jutni, ugyanakkor a szoftvereknek megbízhatónak kell lennie, a gyors fejlesztés mellett is.
Komponens alapú fejlesztés
6. ábra
Spirális fejlesztés: speciális iteratív fejlesztési modell, amelynek a legnagyobb hozzáadott értéke, hogy a szoftverfejlesztés során a meglevő kockázatok kezelését folyamat szinten oldja meg. A modell a korábbi modellekkel ellentétben sokkal szisztematikusabban kezeli a fejlesztési folyamatot, hiszen minden lépés esetén külön elemzi a megvalósítás kockázatát, számba véve a lehetséges sikertelen kimeneteket. Az ilyen mértékű kockázatelemzés a kisebb projekteket nagyon merevvé tudja tenni, ezért a modellt sokkal inkább nagyobb projektek esetén érdemes használni.
Spirál modell [9]
7. ábra
Eldobható prototípus fejlesztési modell: ez az evolúciós fejlesztési modell a követelmények pontos meghatározására helyezi a hangsúlyt. Az olyan fejlesztéseknél van nagy haszna ennek a fejlesztési modellnek, ahol a követelményeket nem lehet, vagy nem érdemes pontosan meghatározni. A modell a szoftverfolyamat kezdeti szakaszában egy üres, felhasználói felületekkel rendelkező, azonban funkciók megvalósítása nélküli ún. prototípus szoftver létrehozását javasolja. Ez abban nyújt segítséget, hogy a felhasználó igényeit, követelményeit pontosan meg lehessen határozni. A létrehozott prototípus szoftver nem fogja a leendő szoftver részét képezni, emiatt kapta az eldobható prototípus elnevezést. A modell nehézsége, hogy a túl sok prototípus, verzió áttekinthetetlenné teheti fejlesztést. A modell jól alkalmazható kis és közepes interaktív rendszerek, nagy rendszerek részrendszereinek és rövid életciklusú szoftverfejlesztéseknél.
Inkrementális modell [10]
8. ábra
A bemutatott modellek kapcsán jogosan merül fel a kérdés az Olvasóban, melyik fejlesztési modell lesz a helyes választás, melyik fejlesztési modell mentén induljon el a munka. Vannak projektek, ahol a problématér egyértelmű, de előfordulnak olyan feladatok is, ahol a modellválasztás nem egyszerű. Nincs egy általános döntési receptúra, hiszen a választást nemcsak a feladat jellege határolja be, hanem a projektcsapat hozzáállása is alakítja, vagy éppen a szervezeti kultúra szab keretet a választásnak.